import 'package:intl/intl.dart';

class NumberUtil{
  NumberUtil._();

  static final _fmtInt = NumberFormat('#,###');

  /// 兼容 dynamic 输入
  /// 数字 / 字符串 / 小数 / 不合规 → 自动按规则处理
  static String formatK(dynamic value) {
    final num number = _safeToNumber(value);

    // 判断是否有小数
    final hasDecimal = number % 1 != 0;

    if (!hasDecimal) {
      // 整数直接格式化
      return _fmtInt.format(number);
    }

    // 处理小数：整数部分 + 小数部分保留
    final parts = number.toString().split('.');

    final intPart = int.parse(parts[0]);
    final decimalPart = parts[1]; // 原样保留

    return "${_fmtInt.format(intPart)}.$decimalPart";
  }

  /// 把 dynamic 安全转换为 num
  /// 不可解析 → 0
  static num _safeToNumber(dynamic value) {
    if (value == null) return 0;

    if (value is num) return value;

    if (value is String) {
      // int
      final intVal = int.tryParse(value);
      if (intVal != null) return intVal;

      // double
      final doubleVal = double.tryParse(value);
      if (doubleVal != null) return doubleVal;

      return 0;
    }

    return 0;
  }
}